package com.odontosis.view.impressao;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import com.odontosis.entidade.ParametrosMalaDireta;
import com.odontosis.ioc.ContainerIoc;
import com.odontosis.service.ParametrosMalaDiretaService;
import com.odontosis.service.UsuarioService;
import com.odontosis.view.OdontosisAction;

public class AcaoImpressaoMalaDireta extends OdontosisAction<UsuarioService> {
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) throws Exception {
		FormImpressaoMalaDireta formulario = (FormImpressaoMalaDireta) form;
		if(formulario.getMetodo() != null && formulario.getMetodo().equals("finalizado")){
			return onExecutar(mapping, form, request, response);
		} else if(formulario.getMetodo() != null && formulario.getMetodo().equals("falha")){
			return onFalhou(mapping, form, request, response);
		}
		return onIniciar(mapping, form, request, response);
		
	}
	
	public ActionForward onFalhou(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) throws Exception {
		FormImpressaoMalaDireta formulario = (FormImpressaoMalaDireta) form;
		Collection<String> alerta = new ArrayList<String>();
		request.setAttribute("alerta", "A impressora não foi selecionada. Por favor tente novamente.");
		request.setAttribute("erro", null);
		return mapping.findForward("inicio");
	}
	
	public ActionForward onExecutar(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) throws Exception {
		FormImpressaoMalaDireta formulario = (FormImpressaoMalaDireta) form;
		request.setAttribute("sucesso", "Os dados foram enviados para a impressora com sucesso");
		request.setAttribute("erro", null);
		return mapping.findForward("inicio");
	}
	
	public ActionForward onIniciar(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) throws Exception {
		FormImpressaoMalaDireta formulario = (FormImpressaoMalaDireta) form;
		List<String> valores = (List<String>) request.getAttribute("valores");
		formulario.setObjetos(valores);
		ParametrosMalaDiretaService parametrosMalaDiretaService = ContainerIoc.getParametrosMalaDiretaService();
		ParametrosMalaDireta parametrosMalaDireta = parametrosMalaDiretaService.load(1L);
		formulario.transferirParaForm(formulario, parametrosMalaDireta);

		return mapping.getInputForward();
	}
}
